﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Banesco.Entidades;
using ProntoCompra.Logica;

namespace WebCliente.Pages
{
    public partial class frmRegistroUsuariosSistemas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid)
                {
                    UsuarioSistema objUsuarioSistema = new UsuarioSistema();
                    Mensaje retMensaje = new Mensaje();
                    Banesco.Logica.BSBanesco objBSBanesco = new Banesco.Logica.BSBanesco();

                    objUsuarioSistema.NombreUsuario = this.txtNombreUsuario.Text.Trim().ToString();
                    objUsuarioSistema.Contraseña = this.EncriptarContraseña(txtContraseña.Text.Trim().ToString());
                    objUsuarioSistema.NombreUsuarioSistema = this.txtNombreUsuarioSistema.Text.Trim().ToString();
                    objUsuarioSistema.NombreCompleto = this.txtNombreCompleto.Text.Trim().ToString();
                    objUsuarioSistema.NumeroTelefono = this.txtNumeroTelefono.Text.Trim().ToString();
                    objUsuarioSistema.CorreoElectronico = this.txtCorreoElectronico.Text.Trim().ToString();
                    objUsuarioSistema.Estado = "I";
                    objUsuarioSistema.IDUsuarioCreador = 1;
                    objUsuarioSistema.FechaCreacion = DateTime.Now;
                    objUsuarioSistema.IDUsuarioModificacion = 1;
                    objUsuarioSistema.FechaModificacion = DateTime.Now;
                    objUsuarioSistema.FechaModificacionContraseña = DateTime.Now;

                    retMensaje = objBSBanesco.UsuariosSistema_GuardarInformacionUsuarios(objUsuarioSistema);
                    if (retMensaje.Status == Mensaje.EnumStatus.OK)
                    {
                        EstablecerMensaje("Se ha completado de manera satisfactorio el registro del usuario", WebCliente.UserControls.pcCajaMensajes.PageProtectionMode.Satisfactorio);
                        LimpiarControles();
                        EnviarCorreoElectronico(objUsuarioSistema.NombreCompleto, objUsuarioSistema.NombreUsuario, objUsuarioSistema.CorreoElectronico,txtContraseña.Text.ToString());


                    }
                    else
                    {
                        EstablecerMensaje("No se ha completado de manera satisfactorio el registro del usuario", WebCliente.UserControls.pcCajaMensajes.PageProtectionMode.Error);

                    }

                }
            }
            catch (Exception ex)
            {

            }
        }

        /// <summary>
        /// Encriptacion de contraseña para usuario de sistema
        /// </summary>
        /// <param name="contraseña">Valor original de la contraseña</param>
        /// <returns>Tipo de dato string con la contraseña encriptada</returns>
        private string EncriptarContraseña(string contraseña)
        {
            string objEncriptarContraseña = string.Empty;
            objEncriptarContraseña = LogicStudio.HashEncode.LogicStudioEncodeManager.EncriptarContraseña(contraseña);
            return objEncriptarContraseña;
        }

        /// <summary>
        /// Establece el tipo de mensaje y el contenido del mensaje.
        /// </summary>
        /// <param name="mensaje">Mensaje a desplegar en el sistema</param>
        /// <param name="tipoMensaje">Tipo de mensaje a desplegar en el sistema</param>
        private void EstablecerMensaje(string mensaje, WebCliente.UserControls.pcCajaMensajes.PageProtectionMode tipoMensaje)
        {
            pcCajaMensajes1.Mensaje = mensaje;
            pcCajaMensajes1.TipoMensaje = tipoMensaje;
            pcCajaMensajes1.EstablecerInformacion();
        }

        /// <summary>
        /// Inicializa los controles a valores de cadenas vacias
        /// </summary>
        private void LimpiarControles()
        {
            this.txtContraseña.Text = string.Empty;
            this.txtCorreoElectronico.Text = string.Empty;
            this.txtNombreCompleto.Text = string.Empty;
            this.txtNombreUsuario.Text = string.Empty;
            this.txtNombreUsuarioSistema.Text = string.Empty;
            this.txtNumeroTelefono.Text = string.Empty;
        }

        private bool EnviarCorreoElectronico(string NombreCompleto, string NombreUsuario, string CorreoElectronico, string Contraseña)
        {
            LogicMail correo = new LogicMail();
            bool correo_enviado = false;
            string plantilla = string.Empty;
            string urlLogoEmail = ConfigurationManager.AppSettings["EmailDomain"].ToString() + ConfigurationManager.AppSettings["EmailHeaderLogo"].ToString();
            plantilla = Resources.BanescoTemplates.EMailTemplateNuevoUsuarioSistema.ToString();

            plantilla = plantilla.Replace("[Usuario]", NombreCompleto);
            plantilla = plantilla.Replace("[UserName]", NombreUsuario);
            plantilla = plantilla.Replace("[contraseña]", Contraseña);
            plantilla = plantilla.Replace("[LOGO]", urlLogoEmail);
            plantilla = plantilla.Replace("[URL]", ConfigurationManager.AppSettings["EmailDomain"].ToString());

            correo_enviado = correo.EnviarMensaje(CorreoElectronico, "Registro de nuevo usuario", plantilla, true);
            return correo_enviado;
        }


    }
}
